//----------------------------------*-C++-*----------------------------------//
/*!
 * \file   GlobalProblem.hh
 * \author Jeremy Roberts
 * \date   11/23/2010
 * \brief  Base class for local problem routines.
 * \note   Copyright (C) 2010 Jeremy Roberts
 */
//---------------------------------------------------------------------------//
// $Rev:: 140                                           $:Rev of last commit
// $Author:: j.alyn.roberts@gmail.com                   $:Author of last commit
// $Date:: 2011-09-14 16:53:40 +0000 (Wed, 14 Sep 2011) $:Date of last commit
//---------------------------------------------------------------------------//

#ifndef GLOBALPROBLEM_HH
#define GLOBALPROBLEM_HH

#include <iostream>
#include <cmath>
#include "LinAlg.hh"
#include "GlobalInput.hh"
#include "ResponseFunctionServer.hh"
#include "ResponseMatrix.hh"
#include "ResponseMatrixFull.hh"
#include "AbsorptionResponse.hh"
#include "FissionResponse.hh"
#include "LeakageResponse.hh"
#include "ConnectMatrix.hh"
#include "Connect2dCart.hh"

using namespace std;
//===========================================================================//
/*!
 * \class GlobalProblem
 * \brief This class encapsulates the entire local problem routine.
 *
 * to be completed
 *
 */
//===========================================================================//

class GlobalProblem
{

  public:
    GlobalProblem( GlobalInput &input,
                   ResponseFunctionServer *s )
    : M( &input ), R( input, s ), L( input, s, M.getMindex(), M.getMsize() ),
      F( input, s ), A( input, s ), J(input.degfree)  {};
    ~GlobalProblem(){};

  public:
    Connect2dCart       M; // connectivity matrix
    ResponseMatrixFull  R; // response matrix
    LeakageResponse     L; // leakage operator
    FissionResponse     F; // fission operator
    AbsorptionResponse  A; // absorption operator
    SermentVector       J; // incident current vector

};

#endif // GLOBALPROBLEM_HH

//---------------------------------------------------------------------------//
//                 end of GlobalProblem.hh
//---------------------------------------------------------------------------//

